#coding=utf-8
"""
Author:林怡
Time:2025/5/6 19:35
"""

'''
在dos窗口：pip install pyyaml
'''
import sys
sys.path.append('..')
import yaml
from config.config import *
import os

class Read_Yaml():
    def __init__(self,file_path):
        '''
        接受YAML文件作为参数
        初始化data为None  用于存储加载后的yaml文件
        :param file_path:
        '''
        self.file_path = file_path
        self.data = None

    def load_data_yaml(self):
        '''
        加载yaml文件内容
        使用with open打开yaml文件，并使用yaml.safe_load(f)加载文件内容
        如果文件不存在或解析错误会捕捉异常并打印异常
        如果文件存在将解析后的数据存储在data实例变量（属性）当中
        :return:
        '''

        try:
            with open(self.file_path,'r',encoding="utf-8") as f:
                self.data = yaml.safe_load(f)
            print("Yaml 加载成功")
        except FileExistsError:
            print(f"错误：文件{self.file_path} 未找到")
        except yaml.YAMLError as e:
            print(f"错误：解析 YAML文件是错误-{e}")
        except Exception as e:
            print(f"未知错误：{e}")

    def get_data_yaml(self):
        '''
        获取加载后的yaml数据
        :return: 字典或列表
        '''
        if self.data is None:
            print("尚未加载YAML文件，请先调用load_data_yaml方法")
            return None
        return self.data

    def __str__(self):
        '''
        返回加载后的YAML数据===》字符串表示
        :return:
        '''
        if self.data is None:
            return "尚未加载YAML文件"
        return str(self.data)
file = os.path.join(data_path,'data.yaml')
yaml_read = Read_Yaml(file)

# 加载yaml文件
yaml_read.load_data_yaml()

# 获取加载后的数据
data = yaml_read.get_data_yaml()
print(data)
print(type(data),end=" ") #<class 'dict'>
print(yaml_read)




































